package daos;

import java.util.List;

import javax.persistence.Query;

import entidades.Especialidade;
import entidades.Medico;
import entidades.Paciente;
import exceptions.NoDocumentoException;
import exceptions.NoNameException;

public class MedicoDAO extends GenericDAO<Medico> {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	public MedicoDAO() {
		super(Medico.class);
	}

	@SuppressWarnings("unchecked")
	public List<Medico> buscarPorNomeLista(String nome) {
		Query q = em.createQuery("Select m from Medico m  where m.nome like '"
				+ nome + "%'", Medico.class);
		return q.getResultList();
	}
	
	
	@SuppressWarnings("unchecked")
	public Medico buscarPorNome(String nome) {
		Query q = em.createQuery("Select m from Medico m  where m.nome like '"
				+ nome + "%'", Medico.class);
		if (q.getResultList().size() > 0) {
			return (Medico) q.getResultList().get(0);
		}else{
			return null;
		}
		
	}
	
	@SuppressWarnings("unchecked")
	public List<Especialidade> findAllEspecialidade() {
		Query q = em.createQuery("Select e from Especialidade e ", Especialidade.class);
		return q.getResultList();
	}
	
	
	@SuppressWarnings("unchecked")
	public Medico buscarPorId(int id) {
		Medico m = super.find(id);
		return m;
	}
	
	@SuppressWarnings("unchecked")
	public Medico salvar(Medico m) throws NoNameException, NoDocumentoException {
		if (m.crm == ""){
			throw new NoDocumentoException();
		}
		
		if ((m.nome) == ""){
			throw new NoNameException();
		}
	
		if (m.id > 0) {
			super.update(m);
		}else{
			super.save(m);
		}
		
		return m;
	}
}
